home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / lib / rcscripts / net.modules.d / helpers.d / config-system next >
Text File  |  2006-04-25  |  4KB  |  146 lines

  1. # Copyright (c) 2004-2005 Gentoo Foundation
  2. # Distributed under the terms of the GNU General Public License v2
  3. # $Header$
  4.  
  5. # Contributed by Roy Marples (uberlord@gentoo.org)
  6.  
  7. [[ -z ${MODULES_DIR} ]] && MODULES_DIR=/lib/rcscripts/net.modules.d
  8.  
  9. if [[ $( type -t interface_variable ) != function ]]; then
  10.     source ${MODULES_DIR}/helpers.d/functions
  11. fi
  12. if [[ $( type -t add_suffix ) != function ]]; then
  13.     source /sbin/functions.sh
  14. fi
  15.  
  16. [[ -e $(add_suffix /etc/conf.d/net) ]] && source $(add_suffix /etc/conf.d/net)
  17.  
  18. # bool need_hostname(void)
  19. #
  20. # Returns a 0 if no hostname is already set
  21. # Otherwise 1
  22. need_hostname() {
  23.     local n=$( hostname )
  24.     [[ ${n} == "(none)" || ${n} == "localhost" ]]
  25.     return $?
  26. }
  27.  
  28. # void restore_configs(void)
  29. #
  30. # Restores saved configuration when the DHCP client closes down
  31. restore_configs() {
  32.     [[ -f /etc/resolv.conf.sv ]] && mv /etc/resolv.conf.sv /etc/resolv.conf
  33.     [[ -f /etc/ntp.conf.sv ]] && mv /etc/ntp.conf.sv /etc/ntp.conf
  34.     [[ -f /etc/yp.conf.sv ]] && mv /etc/yp.conf.sv /etc/yp.conf
  35. }
  36.  
  37. # void get_wireless_vars(void)
  38. #
  39. # Configures variables depending on SSID connected to
  40. get_wireless_vars() {
  41.     # Check that wireless has not already been configured
  42.     [[ $(type -t wireless_check_extensions) == function ]] && return
  43.  
  44.     # Check we can load up the basics
  45.     [[ ! -f ${MODULES_DIR}/essidnet || ! -f ${MODULES_DIR}/${module} ]] && return
  46.  
  47.     local m x
  48.     # Lets do this the easy way - iwconfig is what we need as it supports
  49.     # getting all the information we need regardless of how it was setup
  50.     if [[ -f /sbin/iwconfig ]]; then
  51.         m=iwconfig
  52.     else
  53.         # This is hairy. We need to know if a supplicant is installed
  54.         # and running on the interface
  55.         if [[ -f /sbin/wpa_supplicant && -S /var/run/wpa_supplicant/${interface} ]]; then
  56.             m=wpa_supplicant
  57.         fi
  58.     fi
  59.     [[ -z ${m} ]] && return
  60.  
  61.     source ${MODULES_DIR}/${m}
  62.     for x in $( typeset -f | grep -o ^${m}_'[^ ]*' ); do
  63.         eval "wireless${x#${m}}() { ${x} \"\$@\"; }"
  64.     done
  65.  
  66.     # Setup the devnull var as we probably aren't being called via net.lo
  67.     [[ -z ${devnull} ]] && local devnull=/dev/null
  68.  
  69.     # Check we are a wireless interface
  70.     wireless_check_extensions ${interface} || return
  71.  
  72.     local -a MODULES=( "${module}" )
  73.     source ${MODULES_DIR}/${module}
  74.     source ${MODULES_DIR}/essidnet
  75.  
  76.     essidnet_pre_start ${interface} >/dev/null
  77. }
  78.  
  79. # This routine configures the local host for non-ip and routing info
  80. # from a DHCP client
  81. config_system() {            
  82.     # Load our wireless mapped vars
  83.     # For example dhcp_dns_ESSID becomes dhcp_dns_eth0
  84.     get_wireless_vars
  85.  
  86.     local dhcp ifvar=$( interface_variable ${interface} )
  87.     if need_hostname ; then
  88.         [[ -n ${hostname} ]] && hostname ${hostname} >/dev/null
  89.     fi
  90.  
  91.     eval dhcp=\" \$\{dhcp_${ifvar}\} \"
  92.  
  93.     if [[ ${dhcp} != *' nodns'* ]] && [[ -n ${domain} || -n ${dns} ]]; then
  94.         echo "# generated automatically by net-scripts" > /etc/resolv.conf.tmp
  95.         chmod 644 /etc/resolv.conf.tmp
  96.         [[ -n ${domain} ]] && echo "domain ${domain}" >> /etc/resolv.conf.tmp
  97.  
  98.         for x in ${dns}; do
  99.             echo "nameserver ${x}" >>/etc/resolv.conf.tmp
  100.         done
  101.  
  102.         [[ -f /etc/resolv.conf && ! -f /etc/resol.conf.sv ]] && mv /etc/resolv.conf /etc/resolv.conf.sv
  103.         mv /etc/resolv.conf.tmp /etc/resolv.conf
  104.     fi
  105.  
  106.     if [[ ${dhcp} != *' nontp '* ]] && [[ -n ${ntpsrv} ]]; then
  107.         echo "# generated automatically by net-scripts" > /etc/ntp.conf.tmp
  108.         chmod 644 /etc/ntp.conf.tmp
  109.  
  110.         echo "restrict default noquery notrust nomodify" >> /etc/ntp.conf.tmp
  111.         echo "restrict 127.0.0.1" >> /etc/ntp.conf.tmp
  112.         echo "driftfile /var/lib/ntp/ntp.drift" >> /etc/ntp.conf.tmp
  113.  
  114.         for x in ${ntpsrv}; do
  115.             echo "restrict ${x} nomodify notrap noquery" >> /etc/ntp.conf.tmp
  116.             echo "server ${x}" >> /etc/ntp.conf.tmp
  117.         done
  118.  
  119.         [[ -f /etc/ntp.conf && ! -f /etc/ntp.conf.sv ]] && mv /etc/ntp.conf /etc/ntp.conf.sv
  120.         mv /etc/ntp.conf.tmp /etc/ntp.conf
  121.     fi
  122.  
  123.     if [[ ${dhcp} != *' nonis '* ]] && [[ -n ${nisdomain} || -n ${nissrv} ]]; then
  124.         echo "# generated automatically by net-scripts" > /etc/yp.conf.tmp
  125.         chmod 644 /etc/yp.conf.tmp
  126.  
  127.         if [[ -n ${nisdomain} ]]; then
  128.             hostname -y ${nisdomain}
  129.             if [[ -n ${nissrv} ]]; then
  130.                 for x in ${nissrv}; do
  131.                     echo "domain ${nisdomain} server ${x}" >> /etc/yp.conf.tmp
  132.                 done
  133.             else
  134.                 echo "domain ${nisdomain} broadcast" >> /etc/yp.conf.tmp
  135.             fi
  136.         else
  137.             for x in ${nissrv}; do
  138.                 echo "ypserver ${x}" >> /etc/yp.conf.tmp
  139.             done
  140.         fi
  141.  
  142.         [[ -f /etc/yp.conf && ! -f /etc/yp.conf.sv ]] && mv /etc/yp.conf /etc/yp.conf.sv
  143.         mv /etc/yp.conf.tmp /etc/yp.conf
  144.     fi
  145. }
  146.